feat(session): branch from earlier user prompts - #115
Open
danielkov wants to merge 5 commits into
Open
Conversation
danielkov
force-pushed
the
feat/transcript-navigation
branch
2 times, most recently
from
September 6, 2026 09:28
b09a058 to
210e33b
Compare
Retire the attachment when a started model-switch compaction is cancelled with unconsumed input, matching prompt and autonomous turn cleanup. Keep noncompacting and noncancelled paths unchanged.\n\nExercise the real actor with diagnostic-pipe backpressure after marker submission and before its first step. Verify queued prompt and MCP wake disposal, unchanged model and durable transcript, and passive reload.
danielkov
force-pushed
the
feat/transcript-prompt-branches
branch
from
September 6, 2026 10:07
1bd6d92 to
78fe3e2
Compare
Persist acknowledged steering through the normal transcript observer using a first-mutator execution fence. Keep the actor usable without executing cancelled model or compaction work, and retain pre-step original/synthetic-input retirement. Cover ordinary, autonomous, initial-branch, and confirmed model-switch turns at real ACP receipt and notification boundaries; quarantine failed or aborted settlement.
Keep per-item successful notification acknowledgements across later boundary failures. Persist only the verified pending prefix through the execution fence, excluding unacknowledged input before any append and removing it before cancellation completes. Retire failed attachments without automatically retrying the undelivered suffix. Cover real transport failure plus cancellation, multi-item and identical steers, append history, explicit reconnect retry, and settlement failure isolation.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add
/branchto edit an earlier text prompt into a new session while preserving the original conversation. Checkout remains provisional until submission, and Escape restores the parked source view and draft.Motivation
Builds on the read-only transcript navigator in #110 with non-destructive continuation from earlier user prompts, including history retained before compaction.
Impact
Checkout requires settled source work and supports text-only prompts. It changes conversation context only: files, running processes, and external effects are not rolled back.
Technical details
Authoritative historical boundaries
Kit-specific ACP v2 list, prepare, and submit requests validate opaque addresses against source history and configuration. The child receives the exact prefix before the selected prompt, never a later summary substituted for missing context.
Durable, retry-safe creation
Versioned bootstrap metadata records lineage, submitted-request identity, and model configuration without changing the outer transcript format. A complete replacement record and branch-scoped disk barrier establish commit; retries recover the same child without duplicating the prompt or model execution.
Provisional client state
The TUI parks the source transcript, editor, and attachments, guards asynchronous results by activation epochs, and routes child replay before execution. The preserved source remains available through
/sessions.